

#ifndef BINDINGS_H
#define BINDINGS_H

#include <wx/string.h>
#include <wx/hashmap.h>
#include <wx/arrstr.h>

#define g_alpha_chars         _T("_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
#define g_alpha_numeric_chars _T("_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")


class Bindings
{
public:

  
  Bindings();

  
  virtual ~Bindings();

  
  void SaveBindings();

  
  void AddBinding(wxString Group,wxString Identifier,wxString Header);

  
  void DelBinding(wxString Group,wxString Identifier,wxString Header);

  
  void GetBindings(wxString Group,wxString Identifier,wxArrayString& DestHeaders);

  
  wxArrayString GetGroups();

private:

  
  void InitialiseBindingsFromConfig();
  
  void SetDefaults();
  
  void SetDefaultsCodeBlocks();
  
  void SetDefaultsWxWidgets();
  
  void SetDefaultsSTL();
  
  void SetDefaultsCLibrary();

  WX_DECLARE_STRING_HASH_MAP(wxArrayString,MappingsT);
  WX_DECLARE_STRING_HASH_MAP(MappingsT,GroupsT);

  GroupsT m_Groups; 
  friend class Configuration;
};

#endif
